 /*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.bl;

//import java.sql.Time;
//import java.util.Date;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.desarrollosw2.DetallePrestamo;
import mx.its.desarrollosw2.Libro;
import mx.its.desarrollosw2.Prestamo;
import mx.its.desarrollosw2.Usuario;
import mx.its.desarrollosw2.dao.DetallePrestamoDaoLocal;
import mx.its.desarrollosw2.dao.PrestamoDaoLocal;
import mx.its.dsw2.biblioteca.enumeracion.EstadoDetallePrestamo;
import mx.its.dsw2.biblioteca.enumeracion.EstadoPrestamo;
import mx.its.dsw2.biblioteca.enumeracion.Estadotransaccion;

/**
 *
 * @author sistemas
 */
@Stateless
public class PrestamoBl implements PrestamoBlLocal {
@EJB
private DetallePrestamoDaoLocal detallePrestamoDao;
@EJB
private PrestamoDaoLocal prestamoDao;
 
        
@Override
    public Estadotransaccion register(Prestamo lend, List<Libro> books) {
        int available=3;
      List<Prestamo> IncompleteLends=
              prestamoDao.findIncompleted(lend.getIdUsuario());
        for(Prestamo p:IncompleteLends){
        available=available-detallePrestamoDao.findLends(p).size();
   }
//        if(available<=0 ||books.size()>available ||lend.getIdUsuario()==null || books.size()<=0){
        if(available<=0 ||books.size()>available){
            return Estadotransaccion.INCOMPLETO;
        }else{
lend.setFecha(new Date());
lend.setHora(new Date());
lend.setEstado(EstadoPrestamo.PENDIENTE.ordinal());
prestamoDao.create(lend);
//      
//      prestamoDao.create(lend);
        for(Libro b:books){
              DetallePrestamo dp=new DetallePrestamo();
            dp.setIdLibro(b);
        dp.setIdPrestamo(lend);
//        lend.setFecha(fecha);
//        lend.setHora(hora);
        dp.setEstado(EstadoDetallePrestamo.PRESTADO.ordinal());
        detallePrestamoDao.create(dp);
    }   }
        return Estadotransaccion.COMPLETO;
     
         
    }
      
    @Override
    public Estadotransaccion takeBack(List<Libro> books) {
       for(Libro book:books){
           DetallePrestamo dp=detallePrestamoDao.findBooks(book);
      if(dp==null){
          return Estadotransaccion.INCOMPLETO;
      }else{
         dp.setEstado(EstadoDetallePrestamo.REGRESADO.ordinal()); 
      detallePrestamoDao.edit(dp);
      }
       }    
        return null;
    }

    @Override
    public EstadoDetallePrestamo IncompleteLendsByUser(Prestamo lend,Usuario user ) {
        
        prestamoDao.findIncompleted(user);
        
        return null;
    }

    @Override
    public List<Libro> LendBooksByUser(Libro book, Usuario user) {
        return null;
    }

    @Override
    public List<Prestamo> GeneralIncompleteLends(Prestamo lend) {
        return null;
    }
    @Override
 public List<Libro> GeneralLendsBooks(Libro book){
     return null;
 }

    @Override
    public List<Prestamo> getAll(){
        return prestamoDao.findAll();
    }


}
